package cn.iocoder.yudao.module.system.service.data;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.module.system.controller.admin.data.vo.DataPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.data.vo.DataSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.data.DataDO;

/**
 * 存储用户健康相关数据，包括体检记录、症状报告、医疗历史等，用于健康分析和医疗服务 Service 接口
 *
 * @author 安捷星
 */
public interface DataService {

    /**
     * 创建存储用户健康相关数据，包括体检记录、症状报告、医疗历史等，用于健康分析和医疗服务
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createData(@Valid DataSaveReqVO createReqVO);

    /**
     * 更新存储用户健康相关数据，包括体检记录、症状报告、医疗历史等，用于健康分析和医疗服务
     *
     * @param updateReqVO 更新信息
     */
    void updateData(@Valid DataSaveReqVO updateReqVO);

    /**
     * 删除存储用户健康相关数据，包括体检记录、症状报告、医疗历史等，用于健康分析和医疗服务
     *
     * @param id 编号
     */
    void deleteData(Long id);

    /**
     * 获得存储用户健康相关数据，包括体检记录、症状报告、医疗历史等，用于健康分析和医疗服务
     *
     * @param id 编号
     * @return 存储用户健康相关数据，包括体检记录、症状报告、医疗历史等，用于健康分析和医疗服务
     */
    DataDO getData(Long id);

    /**
     * 获得存储用户健康相关数据，包括体检记录、症状报告、医疗历史等，用于健康分析和医疗服务分页
     *
     * @param pageReqVO 分页查询
     * @return 存储用户健康相关数据，包括体检记录、症状报告、医疗历史等，用于健康分析和医疗服务分页
     */
    PageResult<DataDO> getDataPage(DataPageReqVO pageReqVO);

    Boolean checkedToday(String userId);
}